The performance of hard-disk drives has lagged significantly behind the performance of central processing units. As such, the input/output (I/O) data transfer to hard-disk drives remains one of the biggest bottlenecks of computer systems. Even though the advent of faster drives such as solid state drives is alleviating the bottleneck, the relatively high cost of the faster drives is prohibiting mass adoption of the faster drives as the dominant storage device.
To alleviate the bottleneck problem, non-volatile memory has been used as a cache for the hard-disk drive in a system. For example, some disk sectors or logical block addresses (LBAs) of the hard-disk drive can be cached in a non-volatile memory, so that the central processing unit is able to access the data cached in the non-volatile memory at a faster access rate than the hard-disk drive.
The caching schemes used to accelerate I/O data transfer are based primarily on LBA-level access patterns or specific instructions from an operating system or a user to pin or unpin LBAs in the non-volatile memory.